package com.zwj.interview.回文结构;

/**
 * 给定一个字符串，请判断它是不是回文。假设只需要考虑字母和数字字符，并忽略大小写。
 * 例如，"Was it a cat I saw？"是一个回文字符串，而"racea car"不是回文字符串
 */
public class IsPalindrome {

    public static  boolean isPalindrome(String s) {
        int i = 0;
        int j = s.length() - 1;
        while (i < j) {
            char ch1 = s.charAt(i);
            char ch2 = s.charAt(j);
            //只考虑字母和数字字符，如果某个指针指向的字符既不是字母也不是数字，则移动指针跳过该字符
            if (!Character.isLetterOrDigit(ch1)) {
                i++;
            } else if (!Character.isLetterOrDigit(ch2)) {
                j--;
            } else {
                ch1 = Character.toLowerCase(ch1);
                ch2 = Character.toLowerCase(ch2);
                if (ch1 != ch2) {
                    return false;
                }
                i++;
                j--;
            }
        }
        return true;
    }

    public boolean get(String s){
        int i=0;
        int j=s.length()-1;
        char[] ch=s.toCharArray();
        while(i<j){
            char ch1=s.charAt(i);
            char ch2=s.charAt(j);
            if(!Character.isLetterOrDigit(ch1)){
                i++;
            }else if(!Character.isLetterOrDigit(ch2)){
                j--;
            }else{
                ch1=Character.toLowerCase(ch1);
                ch2=Character.toLowerCase(ch2);
                if(ch1!=ch2){
                   return false;
                }
                i++;
                j--;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println(isPalindrome("Was it a cat I saw？"));
    }
}
